package com.supplychain.financial.parent.api;

import com.supplychain.financial.parent.entity.DO.ShopDO;
import com.supplychain.financial.parent.entity.DTO.PageDTO;
import com.supplychain.financial.parent.entity.DTO.SuperMarketUserDTO;
import com.supplychain.financial.parent.entity.QueryModel.MapQueryModel;
import com.supplychain.financial.parent.common.exception.CustomException;

import java.util.List;
import java.util.Map;

public interface ShopService {
	/**
	 * 查询分页的shop信息
	 * @param sortedKey
	 * @param sortedValue
	 * @param filters
	 * @param params
     * @return
	 */
	PageDTO<ShopDO> findShopByPage(Integer page, Integer pageSize, String sortedKey, String sortedValue, String filters, Map<String, String> params) throws CustomException;
	/**
	 * 修改等操作用户
	 * @param shop 操作对象
	 * @param oper 操作类型
	 */
	void editShopInfo(ShopDO shop, String oper) throws CustomException;

	/**
	 * 扫码出货订单查询
	 *
     * @return
	 */
	List<Map<String,Object>> findShipmentOrderByLsatCreateTime(Map<String, String> params) throws CustomException;

	/**
	 * 统计数据，按天查询
	 * @return
	 */
	Map<String,Object> findShipmentOrderDayData(Map<String, String> params) throws CustomException;

	/**
	 * 统计数据，按周查询
	 * @return
	 */
	Map<String,Object> findShipmentOrderMonthData(Map<String, String> params) throws CustomException;

	/**
	 * 统计数据，按月查询
	 * @return
	 */
	Map<String,Object> findShipmentOrderYearData(Map<String, String> params) throws CustomException;

	/**
	 * 刮刮奖中奖统计
	 *
     * @return
	 */
    List<Map<String,Object>> findScratchoffByLsatCreateTime(Map<String, String> params)  throws CustomException;

	Map<String,Object> findScratchoffDayData(Map<String, String> params) throws CustomException;

	Map<String,Object> findScratchoffMonthData(Map<String, String> params) throws CustomException;

	Map<String,Object> findScratchoffWeekData(Map<String, String> params) throws CustomException;

	Map<String,Object> findResidueScratchoff(Map<String, String> params) throws Exception;

    List<Map<String,Object>> getScratchoffByTime(Map<String, String> stringMap) throws CustomException;

    List<Map<String,Object>> getShipmentOrderByTime(Map<String, String> stringMap) throws CustomException;

	PageDTO<Map<String, Object>> selectStock(Map<String, String> stringMap) throws CustomException;
	
	PageDTO<Map<String, Object>> selectStocks(Map<String, String> stringMap) throws CustomException;
	
	PageDTO<Map<String, Object>> exportKtTobaccoOrder(Map<String, String> stringMap) throws CustomException;

	List<Map<String,Object>>  selectStockToExcel(Map<String, String> stringMap) throws Exception;

    List<Map<String,Object>> getShopNameToSelect(Map<String, String> params) throws CustomException;

    Map<String,Object> getStockStatistics(Map<String, String> params) throws CustomException;

	/**
	 * 获取商品属性树来展示查询
	 * @return
	 * @throws CustomException
	 */
	List<Map<String,String>> getProductThreeName() throws CustomException;

    SuperMarketUserDTO getShopAndUserByShopIdAndUserId(SuperMarketUserDTO user) throws CustomException;

    Map<String,String> getOrderState(String orderId) throws CustomException;

	Map<String,Map<String, String>> getSynthesisSelect(Map<String, String> stringMap) throws Exception;

    PageDTO<Map<String,String>> getStockAnalyzeByPageQuery(Map<String, String> stringMap) throws Exception;

    List<Map<String,Object>> getStockAnalyzeExportExcelData(Map<String, String> stringMap) throws Exception;

    List<Map<String,Object>> selectCustNameToSelected(Map<String, String> params) throws Exception;

	public List<Map<String, Object>> getDaZhuanPanPrizeByPageQuery(Map<String, String> stringMap) throws CustomException;

    List<Map<String,Object>> findShopToExportExcel(MapQueryModel params) throws Exception;

	Map<String,Object> getCustomerInfoByIdAndType(String customerId, String shopId, String type);

    Map<String,Map<String,String>> getBigScreenStatisticsData(Map<String, String> stringMap);

	List<Map<String,Object>> getBigScreenData(Map<String, Object> params);
}
